<?php
/**
* 列表页控制器
*/
class ListController extends CommonController{

    /*列表页展示
     **/
    public function index(){
    	$this->topNav();
		//获得所有分类
		$allCate=$this->model->all();
		$cid=Q('get.cid',0,'intval');
		//处理面包屑导航
		$bread=$this->model->getFather($allCate,$cid);
		$bread=array_reverse($bread);
		$this->assign('bread',$bread);
		//获得当前分类和它子级下的所有商品id
		$gids=$this->cidFindGoods($allCate,$cid);
		if($gids){
			//根据商品属性获得筛选条件
			$filter=$this->getFilter($gids);
			//用户的筛选条件：如果没有根据条件个数用0替代
			$pram=isset($_GET['pram'])?explode('_',$_GET['pram']):array_fill(0, count($filter), 0);
			$this->assign('filterData',$filter);
			$this->assign('pram',$pram);
			//通过筛选条件筛选出商品的gid
			$goodsModel=K('goods');
			$res=$goodsModel->filterGoods($pram,$gids);
			//如果筛选结果不为空，通过gid查询出筛选的结果
			if($res){
				$pageData['totle']=count($res);
				$pageData['row']=C('GOODS_ROW');
				$pageData['max']=ceil($pageData['totle']/$pageData['row']);
				$pageObj=new Page($pageData['totle'],$pageData['row'],5);
				$listData=M()->join("__goods__ as g join __brand__ as b on g.brand_bid=b.bid")
							 ->where("gid in (".implode(',',$res).")")->limit($pageObj->limit())->all();
				$this->assign('page',$pageObj->show(3));
				$this->assign('pageData',$pageData);
			}else{
				$listData=array();
			}
		}else{
			$listData=array();
		}
		$this->assign('listData',$listData);
        $this->display();
    }
	
	/*获得筛选条件
	 **/
	private function getFilter($gids){
	    $gidStr=implode(',',$gids);
		$attr=M()->join("__goods_attr__ as ga join __type_attr__ as ta on ga.tp_aid=ta.tp_aid")->where("goods_gid in ({$gidStr})")->group('attr_value')->getField("gaid,attr_value,ga.tp_aid,tp_aname",true);
		$temp=array();
		foreach ($attr as $k => $a) {
			$temp[$a['tp_aname']][]=$a;
		}
		return $temp;
	}
	
	/*找到当前分类及子分类下的所有商品id
	 **/
	private function cidFindGoods($data,$cid){
	    $sonCate=$this->model->getSonCate($data, $cid);
		$sonCid=array($cid);
		foreach ($sonCate as $s) {
			$sonCid[]=$s['cid'];
		}
		$sonCid=implode(',',$sonCid);
		$gids=M('goods')->where("category_cid in ({$sonCid})")->getField('gid',true);
		return $gids;
	}
	/*
	 *1、获得分类下的所有商品gid
	 * if(该分类下有商品){
	 * 		3、通过商品的gid获得商品的属性，按照属性类型整理数组，整理好的数组就是按照属性类型分类的所有筛选条件
	 *		4、把数组分配到页面，循环出所有的筛选
	 *		5、接收get参数pram，三元判断，如果有拆分为数组，如果没有填充默认数组，长度根据商品属性类型的个数
	 *		6、遍历筛选数组，通过筛选条件依次查询商品id，把查询出的gid和通过分类查出的id去交集
	 *		7、通过最后得到的商品gid查询出商品分配到页面
	 * }else{
	 *		return array();
	 * }
	 * 
	 * */
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	

}
    
    
    
?>